﻿using SheepStorage.Domain.DTO.InputDto;
using SheepStorage.Domain.DTO.Output;
using SheepStorage.Domain.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SheepStorage.Service.Interface
{
    public interface IUserInfoService
    {
		/// <summary>
		/// 查询用户所有信息
		/// </summary>
		/// <param name="userTrueName"></param>
		/// <param name="departmentId"></param>
		/// <param name="staffState"></param>
		/// <returns></returns>
		Task<List<UserInfo>> GetUserInfo(string? userTrueName, string? departmentId, int staffState=0);

		//用户登录
		Task<UserInfoOutput> UserLogin(string name, string pwd);


		//根据用户ID反填显示个人信息 todo
		Task<object> GetUserInfoById(int userId);

		//根据用户id反填员工基本信息todo
		Task< UserInfoOutput> GetbaseUserInfoById(int userId);






		/// <summary>
		/// 根据用户id修改用户头像
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="headImage"></param>
		/// <returns></returns>
		    Task<int> UpdateUserHeadImage(int userId, string headImage);

		/// <summary>
		/// 根据用户ID修改用户名称
		/// </summary>
		/// <param name="input"></param>
		/// <returns></returns>
		Task<int> UpdateUserName(UserInfoUpdateInput input);

		/// <summary>
		/// 根据用户id修改用户密码    
		/// </summary>
		/// <param name="input"></param>
		/// <returns></returns>

		Task<int> UpdateUserPwd(UserInfoUpdatePwdInput input);
        //反填用户基本信息
         Task<PersonnelOutput> GetPersonnelByUserId(int userId);
		/// <summary>
		/// /注册用户
		/// </summary>
		/// <param name="info"></param>
		/// <returns></returns>
		Task<int> AddUserInfo(UserInfo info);

		/// <summary>
		/// 增加人员基本信息
		/// </summary>
		/// <param name="personnel"></param>
		/// <returns></returns>
		Task<int> AddPersonnel(Personnel personnel);



		#region 用户的修改

	
		
		
		
		
		
		
		#endregion







		/// <summary>
		/// 修改任职信息
		/// </summary>
		/// <param name="input"></param>
		/// <returns></returns>
		Task<int> UpdateStaffInfo(UpdateStaffInput input);


        /// <summary>
        /// 逻辑删除用户信息
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
          Task<int> UserInfoDelete(int userId);

        /// <summary>
        /// 冻结解冻账号   启用状态---1 启用 0 禁用 
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="userState"></param>
        /// <returns></returns>
         Task<int> UpdateUserState(int userId, int userState);

    }
}
